// 泛型约束

// 场景 需要使用arg.length
// function echoWithArr(arg: T): T{
//   console.log(arg.length)
//   return arg
// }

// 改造
// function echoWithArr<T>(arg: T[]): T[]{
//   console.log(arg.length)
//   return arg
// }
// const arrs = echoWithArr([1,2,3])

// 我想传入object或者其他类型带有length属性的参数需要限制
interface IWithLength {
  length: number
}
function echoWithArr<T extends IWithLength>(arg: T): T {
  console.log(arg.length)
  return arg
}
const str = echoWithArr('str')
const obj = echoWithArr({ length: 10, width: 10 })
const arrList = echoWithArr([1, 2, 3])